package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.modelo.TipoSelo;
import br.com.foxinline.servico.TipoSeloServico;
import br.com.foxinline.utilitario.Mensagem;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

/**
 *
 * @author cadomeireles
 */
@ViewScoped
@ManagedBean
public class ManagerPesquisarTipoSelo implements Serializable {

    @EJB
    TipoSeloServico tipoSeloServico;

    private TipoSelo tipoSeloPesquisar;
    private TipoSelo tipoSeloDeletar;
    private TipoSelo tipoSeloVisualizar;

    private List<TipoSelo> tiposSelo;
    
    private String visualizarId;

    @PostConstruct
    public void init() {
        instanciar();
        delegar();
    }
    
    private void instanciar() {
        this.tipoSeloPesquisar = new TipoSelo();
        this.tipoSeloVisualizar = new TipoSelo();
        this.tiposSelo = new ArrayList<TipoSelo>();    
    }
    
    private void delegar() {
        Map<String, String> parametros = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        this.visualizarId = parametros.get("tipoSeloId");
        
        if (visualizarId != null) {
            this.tipoSeloVisualizar = tipoSeloServico.pesquisar(Long.parseLong(visualizarId));
        }        
    }
    
    public void pesquisar() {
        this.tiposSelo = tipoSeloServico.pesquisar(this.tipoSeloPesquisar);
    }
    
    public void limpar() {
        instanciar();
    }
        
    public void deletar() {
        tipoSeloServico.deletar(this.tipoSeloDeletar);
        pesquisar();
        ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
        FacesContext fc = FacesContext.getCurrentInstance();
        FacesContext.getCurrentInstance().addMessage("messages", new FacesMessage(FacesMessage.SEVERITY_INFO, "Tipo de Selo excluído com sucesso!", ""));
        fc.getExternalContext().getFlash().setKeepMessages(true);

        try {
            context.redirect("pesquisarTipoSelo.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(ManagerPesquisarTipoSelo.class.getName()).log(Level.SEVERE, null, ex);
        }
     
    }

    public TipoSelo getTipoSeloPesquisar() {
        return this.tipoSeloPesquisar;
    }

    public void setTipoSeloPesquisar(TipoSelo tipoSeloPesquisar) {
        this.tipoSeloPesquisar = tipoSeloPesquisar;
    }
    
    public List<TipoSelo> getTiposSelo() {
        return this.tiposSelo;
    }

    public void setTiposSelo(List<TipoSelo> tiposSelo) {
        this.tiposSelo = tiposSelo;
    }

    public TipoSelo getTipoSeloDeletar() {
        return tipoSeloDeletar;
    }

    public void setTipoSeloDeletar(TipoSelo tipoSeloDeletar) {
        this.tipoSeloDeletar = tipoSeloDeletar;
    }

    public TipoSelo getTipoSeloVisualizar() {
        return tipoSeloVisualizar;
    }

    public void setTipoSeloVisualizar(TipoSelo tipoSeloVisualizar) {
        this.tipoSeloVisualizar = tipoSeloVisualizar;
    }

}
